/**
 * @author 14544
 * @date 2020/3/26 11:21
 */
let TEST_URL = '/gov/gov.do?methodname=queryDocStatuses&serviceid=gov_status';
// HTTP 设置 请求头，获取 响应头
// 请求参数通过编码后
function encodeURLParams(obj) {
    let query = ''
    //添加多个参数时 往参数前面加上一个 & ，
    for (const key in obj) {
        if (obj.hasOwnProperty(key)) {
            // 进行名-值对的编码
            query += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);
        }
    }
    return query.slice(1);
}

{
    let xhr = new XMLHttpRequest();
    xhr.responseType = 'json';
    xhr.onload = function () {
        console.log(`loaded status:${xhr.status}`);
        console.log(xhr.response)
        console.log(getAllResponseHeaders())
    };
    xhr.open('POST', '/gov/gov.do', true);

    // 设置请求头必须要在open方法之后
    // 自定义请求头 一些请求头可能由浏览器专门管理，比如，Referer 和 Host 不能更改
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('formdata', '1');
    // 无法撤销或覆盖之前设置过的请求头，而是往上继续添加
    // xhr.setRequestHeader('formdata','2');

    let params = {
        serviceid: 'gov_webdocument',
        methodname: "queryDocumentsInQuanbu",
        SiteId: 1212,
        ChannelId: 16993,
        PageSize: 20,
        PageIndex: 1,
        DocType: '',
        OperTime: '',
        OrderBy: '',
        OnlyMy: 1,
    };
    xhr.send(encodeURLParams(params));

    // 处理并返回所有的响应头 （除了 set-cookie、set-cookie2 ）
    function getAllResponseHeaders() {
        // 返回的各个响应头之间是以\r\n 分离的
        let all = xhr.getAllResponseHeaders().split('\r\n');
        all = all.reduce((result, cur) => {
            // 每一个响应头是冒号加空格': '分离的 如：Content-length: 3617
            let [name, value] = cur.split(/:\s*/);
            if (name && value) result[name] = value; // 如果后续有同名的就直接覆盖
            return result
        }, {})
        // 返回一个key、value 对象
        return all
    }
}
